package com.wande.dataplatform.domain.dto;

import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.List;

/**
 * 执行计划DTO
 *
 * @author wande
 */
@Data
public class ExecutionPlanDTO implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 执行计划文本
     */
    private String planText;

    /**
     * 执行步骤
     */
    private List<ExecutionStep> steps;

    /**
     * 预估成本
     */
    private Double estimatedCost;

    /**
     * 预估行数
     */
    private Long estimatedRows;

    /**
     * 执行步骤
     */
    @Data
    public static class ExecutionStep implements Serializable {
        
        @Serial
        private static final long serialVersionUID = 1L;

        /**
         * 步骤ID
         */
        private Integer stepId;

        /**
         * 操作类型
         */
        private String operationType;

        /**
         * 表名
         */
        private String tableName;

        /**
         * 索引使用
         */
        private String indexUsed;

        /**
         * 过滤条件
         */
        private String filterCondition;

        /**
         * 预估行数
         */
        private Long estimatedRows;

        /**
         * 成本
         */
        private Double cost;
    }
}
